package cz.semjobKB.virtuoso.document.api;

import java.util.List;

/**
 * Interface declares methods to retrieve information about a document collected from the database
 */
public interface IDocumentDetail {

    /**
     * Gets the document name, file name that was processed
     * @return  Original document file name
     */
	public String getDocumentName();

    /**
     * Gets the path to the document
     * @return  Document path on a disk
     */
	public String getDocumentPath();

    /**
     * Gets the document plain text
     * @return  Document plain text
     */
	public String getDocumentText();

    /**
     * Gets the triples extracted from the document
     * @return  Extracted triples
     */
	public List<ITripleDbItem> getTriples();

    /**
     * Gets the terminology extracted from the document
     * @return  Extracted terminology
     */
	public List<ITerminologyDetail> getTerminology();

    /**
     * Gets the number of unique terms(subject, object). Does not take frequency of each into account
     * @return  Unique terminology count
     */
	public Integer getUniqueTermCount();

    /**
     * Gets the unique predicate count. Does not take frequency of each into account
     * @return  Unique predicate count
     */
	public Integer getUniquePredicateCount();

    /**
     * Gets the sentence count
     * @return  Sentence count
     */
	public Integer getSentenceCount();

    /**
     * Gets the extracted triples count
     * @return  Triples count
     */
	public Integer getTriplesCount();

    /**
     * Gets the unique terminologies count. Does not take frequency of each into account
     * @return  Unique terminologies count
     */
	public Integer getUniqueTerminologyCount();

    /**
     * Gets terminologies count. Its calculated as a sum of each individual frequencies
     * @return  Overall terminologies count
     */
	public Integer getTerminologyCount();
	
}
